redshift-connectorでRedshift Serverlessに繋いでみる
はじめに
データアナリティクス事業本部のkobayashiです。
PythonでRedshiftのデータを扱う際に使用するモジュールとしてはAmazon Redshift Pythonコネクタが最初の選択肢になるかと思います。Amazon Redshift Python コネクタを使うとboto3やpandasとの連携が簡単に可能になりますが、このAmazon Redshift Python コネクタでRedshift Serverlessに接続してみたのでまとめます。
Amazon Redshift Python コネクタを使って接続してみる
Redshift ServerlessにAmazon Redshift Python コネクタを使って接続してみますが、接続方法に関しては今回はIAMなど使わずにシンプルにホスト名とユーザー名、パスワードで接続してみます。
環境
- Python 3.9.14
- redshift-connector 2.0.909
Redshift Serverlessに接続してみる
まずは redshift-connectorのインストールを行います。
インストールはpipで簡単にインストールできます。
$ pip install redshift-connector
次にRedshift Serverlessに接続するPythonコードを記述します。
import redshift_connector # 接続情報 params = { "host": "{ワークグループ名}.{アカウントID}.ap-northeast-1.redshift-serverless.amazonaws.com", "database": "{DB名}", "user": "{ユーザー名}", "password": "{パスワード}", } with redshift_connector.connect(**params) as con: # カーソルの作成 with con.cursor() as cur: cur.execute("create Temp table book(bookname varchar,author varchar)") cur.executemany( "insert into book (bookname, author) values (%s, %s)", [ ("One Hundred Years of Solitude", "Gabriel García Márquez"), ("A Brief History of Time", "Stephen Hawking"), ], ) cur.execute("select * from book") result = cur.fetchall() print("クエリ結果:\n", result)
今回はシンプルにホスト名、ユーザー名、パスワードで接続を行いますのでredshift-connectorに渡す項目も上記のようになっています。
スクリプト中では公式ドキュメント で行われているのと同様に、一時テーブルbook
を作成し、そのテーブルへデータをInsertした後にSelectを行い結果をprintで表示しています。
実行してみるとRedshift Serverlessでも問題なくredshift-connectorを使って接続が行えることがわかります。
$ python rs-conn_serverless.py クエリ結果: (['One Hundred Years of Solitude', 'Gabriel García Márquez'], ['A Brief History of Time', 'Stephen Hawking'])
まとめ
Amazon Redshift Pythonコネクタのredshift-connectorでRedshift Serverlessへ接続してみました。特に問題なくServerlessでない通常のRedshiftと変わりなく接続は行えました。 今回はシンプルはホスト名とユーザー名・パスワードを使った接続だったのでIAM認証やIdPを使った認証も試してみたいと思います。
最後まで読んで頂いてありがとうございました。